home *** CD-ROM | disk | FTP | other *** search
- Changes from 2.11beta to 2.11.1 (production)
- --------------------------------------------
-
- Went from "beta" to production status!!!
-
- Now flushes stdout before closing pipes or redirected files to
- synchonize output.
-
- MS-DOS changes added in.
-
- Signal handler return type parameterized in Makefile and awk.h and
- some lint removed. debug.c cleaned up.
-
- Fixed FS splitting to never match null strings, per book.
-
- Correction to the manual's description of FS.
-
- Some compilers break on char *foo = "string" + 4 so fixed version.sh and
- main.c.
-
- Changes from 2.10beta to 2.11beta
- ---------------------------------
-
- This release fixes all reported bugs that we could reproduce. Probably
- some of the changes are not documented here.
-
- The next release will probably not be a beta release!
-
- The most important change is the addition of the -nostalgia option. :-)
-
- The documentation has been improved and brought up-to-date.
-
- There has been a lot of general cleaning up of the code that is not otherwise
- documented here. There has been a movement toward using standard-conforming
- library routines and providing them (in missing.d) for systems lacking them.
- Improved (hopefully) configuration through Makfile modifications and missing.c.
- In particular, straightened out confusion over vprintf #defines, declarations
- etc.
-
- Deleted RCS log comments from source, to reduce source size by about one third.
- Most of them were horribly out-of-date, anyway.
-
- Renamed source files to reflect (for the most part) their contents.
-
- More and improved error messages. Cleanup and fixes to yyerror().
- String constants are not altered in input buffer, so error messages come out
- better. Fixed usage message. Make use of ANSI C strerror() function
- (provided).
-
- Plugged many more memory leaks. The memory consumption is now quite
- reasonable over a wide range of programs.
-
- Uses volatile declaration if STDC > 0 to avoid problems due to longjmp.
-
- New -a and -e options to use awk or egrep style regexps, respectively,
- since POSIX says awk should use egrep regexps. Default is -a.
-
- Added -v option for setting variables before the first file is encountered.
- Version information now uses -V and copyleft uses -C.
-
- Added a patchlevel.h file and its use for -V and -C.
-
- Append_right() optimized for major improvement to programs with a *lot*
- of statements.
-
- Operator precedence has been corrected to match draft Posix.
-
- Tightened up grammar for builtin functions so that only length
- may be called without arguments or parentheses.
-
- /regex/ is now a normal expression that can appear in any expression
- context.
-
- Allow /= to begin a regexp. Allow ..[../..].. in a regexp.
-
- Allow empty compound statements ({}).
-
- Made return and next illegal outside a function and in BEGIN/END respectively.
-
- Division by zero is now illegal and causes a fatal error.
-
- Fixed exponentiation so that x ^ 0 and x ^= 0 both return 1.
-
- Fixed do_sqrt, do_log, and do_exp to do argument/return checking and
- print an error message, per the manual.
-
- Fixed main to catch SIGSEGV to get source and data file line numbers.
-
- Fixed yyerror to print the ^ at the beginning of the bad token, not the end.
-
- Fix to substr() builtin: it was failing if the arguments
- weren't already strings.
-
- Added new node value flag NUMERIC to indicate that a variable is
- purely a number as opposed to type NUM which indicates that
- the node's numeric value is valid. This is set in make_number(),
- tmp_number and r_force_number() when appropriate and used in
- cmp_nodes(). This fixed a bug in comparison of variables that had
- numeric prefixes. The new code uses strtod() and eliminates is_a_number().
- A simple strtod() is provided for systems lacking one. It does no
- overflow checking, so could be improved.
-
- Simplification and efficiency improvement in force_string.
-
- Added performance tweak in r_force_number().
-
- Fixed a bug with nested loops and break/continue in functions.
-
- Fixed inconsistency in handling of empty fields when $0 has to be rebuilt.
- Happens to simplify rebuild_record().
-
- Cleaned up the code associated with opening a pipe for reading. Gawk
- now has its own popen routine (gawk_popen) that allocates an IOBUF
- and keeps track of the pid of the child process. gawk_pclose
- marks the appropriate child as defunct in the right struct redirect.
-
- Cleaned up and fixed close_redir().
-
- Fixed an obscure bug to do with redirection. Intermingled ">" and ">>"
- redirects did not output in a predictable order.
-
- Improved handling of output bufferring: now all print[f]s redirected to a tty
- or pipe are flushed immediately and non-redirected output to a tty is flushed
- before the next input record is read.
-
- Fixed a bug in get_a_record() where bcopy() could have copied over
- a random pointer.
-
- Fixed a bug when RS="" and records separated by multiple blank lines.
-
- Got rid of SLOWIO code which was out-of-date anyway.
-
- Fix in get_field() for case where $0 is changed and then $(n) are
- changed and then $0 is used.
-
- Fixed infinite loop on failure to open file for reading from getline.
- Now handles redirect file open failures properly.
-
- Filenames such as /dev/stdin now allowed on the command line as well as
- in redirects.
-
- Fixed so that gawk '$1' where $1 is a zero tests false.
-
- Fixed parsing so that `RLENGTH -1' parses the same as `RLENGTH - 1',
- for example.
-
- The return from a user-defined function now defaults to the Null node.
- This fixes a core-dump-causing bug when the return value of a function
- is used and that function returns no value.
-
- Now catches floating point exceptions to avoid core dumps.
-
- Bug fix for deleting elements of an array -- under some conditions, it was
- deleting more than one element at a time.
-
- Fix in AWKPATH code for running off the end of the string.
-
- Fixed handling of precision in *printf calls. %0.2d now works properly,
- as does %c. [s]printf now recognizes %i and %X.
-
- Fixed a bug in printing of very large (>240) strings.
-
- Cleaned up erroneous behaviour for RS == "".
-
- Added IGNORECASE support to index().
-
- Simplified and fixed newnode/freenode.
-
- Fixed reference to $(anything) in a BEGIN block.
-
- Eliminated use of USG rand48().
-
- Bug fix in force_string for machines with 16-bit ints.
-
- Replaced use of mktemp() with tmpnam() and provided a partial implementation of
- the latter for systems that don't have it.
-
- Added a portability check for includes in io.c.
-
- Minor portability fix in alloc.c plus addition of xmalloc().
-
- Portability fix: on UMAX4.2, st_blksize is zero for a pipe, thus breaking
- iop_alloc() -- fixed.
-
- Workaround for compiler bug on Sun386i in do_sprintf.
-
- More and improved prototypes in awk.h.
-
- Consolidated C escape parsing code into one place.
-
- strict flag is now turned on only when invoked with compatability option.
- It now applies to fewer things.
-
- Changed cast of f._ptr in vprintf.c from (unsigned char *) to (char *).
- Hopefully this is right for the systems that use this code (I don't).
-
- Support for pipes under MSDOS added.
-